﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BUGCOME.Model.File
{
    /// <summary>
    /// 分片上传元数据（记录分片上传任务的核心信息）
    /// </summary>
    [SugarTable("multipartUploadMeta", "分片上传元数据表")]
    [Tenant("5")]
    public class MultipartUploadMeta
    {
        /// <summary>
        /// 分片上传唯一标识（UUID）
        /// 用于关联所有分片和最终合并操作
        /// </summary>
        public string UploadId { get; set; }

        /// <summary>
        /// 原始文件名（用户上传的文件名）
        /// </summary>
        public string FileName { get; set; }

        /// <summary>
        /// 文件总大小（字节）
        /// 用于计算分片数量和验证合并后文件的完整性
        /// </summary>
        public long FileSize { get; set; }

        /// <summary>
        /// 文件哈希值（MD5等）
        /// 用于校验文件唯一性和完整性
        /// </summary>
        public string FileHash { get; set; }

        /// <summary>
        /// 文件扩展名（如 .zip、.txt）
        /// </summary>
        public string FileExt { get; set; }

        /// <summary>
        /// 存储类型（本地/阿里云/AWS S3）
        /// 对应枚举 StoreType 的整数表示
        /// </summary>
        public int StorageType { get; set; }


        public int StoragePath { get; set; }

        public int Visibility { get; set; }

        /// <summary>
        /// 上传者ID（关联用户表）
        /// </summary>
        public long CreateBy { get; set; }

        /// <summary>
        /// 上传任务创建时间
        /// 用于过期清理等场景
        /// </summary>
        public DateTime CreateTime { get; set; }

        // （可选扩展）可添加字段：
        public int ChunkCount { get; set; } // 分片总数
        
        public int Status { get; set; } // 上传状态（初始化/上传中/已完成/失败）
        
        public DateTime ExpireTime { get; set; } // 任务过期时间
    }
}
